package webgamemaker.Common;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayInteger;
import com.google.gwt.user.client.Element;
import com.google.gwt.widgetideas.graphics.client.GWTCanvas;

public class ExtendedGWTCanvas extends GWTCanvas 
{
	public Element element;
	public JavaScriptObject context;
	
	public ExtendedGWTCanvas()
	{
		element = getElement();
		init();
	}
	
	protected native void init() /*-{
		if(typeof(this.@webgamemaker.Common.ExtendedGWTCanvas::element.getContext) != "undefined")
    		this.@webgamemaker.Common.ExtendedGWTCanvas::context = this.@webgamemaker.Common.ExtendedGWTCanvas::element.getContext("2d");
	}-*/;

	public native boolean hasText()
	/*-{
		if(this.@webgamemaker.Common.ExtendedGWTCanvas::context == null)
			return false;
		return typeof(this.@webgamemaker.Common.ExtendedGWTCanvas::context.fillText) != "undefined";
	}-*/;
	public native boolean hasPixelRead()
	/*-{
		if(this.@webgamemaker.Common.ExtendedGWTCanvas::context == null)
			return false;
		return typeof(this.@webgamemaker.Common.ExtendedGWTCanvas::context.getImageData) != "undefined";
	}-*/;
	
	public native void fillText(String str, float x, float y, float maxwidth)
	/*-{
		var context = this.@webgamemaker.Common.ExtendedGWTCanvas::context;
		context.fillText(str, x, y, maxwidth);
	}-*/;
	
	public native void fillText(String str, float x, float y)
	/*-{
		var context = this.@webgamemaker.Common.ExtendedGWTCanvas::context;
		context.fillText(str, x, y);
	}-*/;
	
	public native JsArrayInteger getImageData(int x, int y, int width, int height)
	/*-{
		var context = this.@webgamemaker.Common.ExtendedGWTCanvas::context;
		return context.getImageData(x,y,width,height).data;
	}-*/;
	
	public native void setShadowColor(String shadowColor)
	/*-{
		var context = this.@webgamemaker.Common.ExtendedGWTCanvas::context;
		context.shadowColor = shadowColor;
	}-*/;
	
	public native void setShadowBlur(float blur)
	/*-{
		var context = this.@webgamemaker.Common.ExtendedGWTCanvas::context;
		context.shadowBlur = blur;
	}-*/;
	
	public native void setShadowOffset(float offsetX, float offsetY)
	/*-{
		var context = this.@webgamemaker.Common.ExtendedGWTCanvas::context;
		context.shadowOffsetX = offsetX;
		context.shadowOffsetY = offsetY;
	}-*/;
	
	public native void setFont(String font)
	/*-{
		var context = this.@webgamemaker.Common.ExtendedGWTCanvas::context;
		context.font = font;
	}-*/;
}
